import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'

Vue.use(Vuex)

export default new Vuex.Store({
  // key 是持久化的名字，默认的名字是vuex
  // storage :选用一种持久化的方案，默认是本地存储
  // reducer: 用于指定哪些属性需要持久d化，不指定reducer，默认vuex所有的数据都会被持久化
  // reducer 是一个函数 这个函数必须返回一盒对象，这个对象就会被持久化 这个函数参数是state
  plugins: [
    createPersistedState({
      key: 'HEIMA_TOUTIAO',
      reducer: ({ tokenObj, bdChannels, histories }) => {
        return {
          tokenObj,
          bdChannels,
          histories
        }
      }
    })
  ],

  state: {
    tokenObj: {},
    bdChannels: [],
    histories: []
  },
  getters: {
    isLogin(state) {
      return !!state.tokenObj.token
    }
  },
  mutations: {
    SET_TOKEN(state, tokenObj) {
      state.tokenObj = tokenObj
    },
    SET_CHANNELS(state, channels) {
      state.bdChannels = channels
    },
    SET_HISTORIES(state, histories) {
      state.histories = histories
    },
    DEL_HISTORIES(state, index) {
      state.histories.splice(index, 1)
    }
  },
  actions: {},
  modules: {}
})
